package MethodReference.引用构造方法;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

public class 引用构造方法 {
    public static void main(String[] args) {
    /*
    方法引用(引用构造方法)

    目的:
        创建这个类的对象
    需求:
        集合里面的存储姓名和年龄，要求针对Student兑现，并收集到list集合当中

        方法引用的规则:
        1.需要有函数式接口
        2.被引用的方法必须已经存在
        3.被引用方法的形参和返回值，需要跟抽象方法的形参返回值一致
        4.被引用方法的功能需要满足当前的需求
     */

        //创建集合
        ArrayList<String> list = new ArrayList<>();
        //添加数据
        Collections.addAll(list,"张无忌-23","李四-32","张强-64","张三丰-23","王五-65","克莱普-21","谢广坤-17");
        //封装成Studer对象并收集到list集合当中
//        List<Student> newList=list.stream().map(new Function<String, Student>() {
//            @Override
//            public Student apply(String s) {
//                String[] split = s.split("-");
//                String name=split[0];
//                int age=Integer.parseInt(split[1]);
//                return new Student(name,age);
//            }
//        }).collect(Collectors.toList());
//        System.out.println(newList);

        List<Student> collect = list.stream()
                .map(Student::new)
                .collect(Collectors.toList());
        System.out.println(collect);

    }
}
